package com.whut.customer.util;

import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidatorUtil {
	
	private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}");
	
	public static boolean isMobile(String src) {
		if(StringUtils.isEmpty(src)) {
			return false;
		}
		Matcher m = mobile_pattern.matcher(src);
		return m.matches();
	}
	
//	public static void main(String[] args) {
//			System.out.println(isMobile("18912341234"));
//			System.out.println(isMobile("1891234123"));
//	}

	/**
	 * 验证对象所有的属性是否为空
	 */
//	public static boolean allEntityfieldIsNUll(Object obj){
//		try{
//			for(Field field:obj.getClass().getDeclaredFields()){
//				field.setAccessible(true);//把私有属性公有化
//				Object object = field.get(obj);
//				if(object instanceof CharSequence){
//					if(!ObjectUtils.isEmpty((String)object)){
//						return false;
//					}
//				}
//				else{
//					if(object instanceof Collection) {
//						if ((Collection) object != null && ((Collection) object).size() > 0) {
//							return false;
//						}
//					}
//					if(!ObjectUtils.isNull(object)){
//						return false;
//					}
//				}
//			}
//		}catch (Exception e){ e.printStackTrace();
//
//		} return true;
//	}

	public static boolean allEntityfieldIsNUll(Object obj) {

		//查询出对象所有的属性
		Field[] fields = obj.getClass().getDeclaredFields();
		//用于判断所有属性是否为空,如果参数为空则不查询
		boolean flag = true;
		for (Field field : fields) {
			//不检查 直接取值
			field.setAccessible(true);
			String fieldName = field.getName(); // 得到属性名
			if(fieldName.equals("serialVersionUID")){
				continue;
			}
			try {
				if(!isEmpty(field.get(obj))) {
					//不为空
					flag = false;
					//当有任何一个参数不为空的时候则跳出判断直接查询
					break;
				}
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		return flag;
	}

	/**
	 * 判断是否为空
	 * 是空的返回true，不是空的返回false
	 */
	public static boolean isEmpty(Object object){
		if(object==null){
			return true;
		}
		if(object instanceof Long){
			long l = Long.valueOf(String.valueOf(object));
			return StringUtil.isNull(l);
		}
		if(object instanceof String){
			String str = object.toString();
			return StringUtil.isNull(str);
		}
		if(object instanceof Collection){
			Collection collection = (Collection) object;
			return StringUtil.isNull(collection);
		}
		if(object instanceof Map){
			Map map = (Map) object;;
			return StringUtil.isNull(map);
		}
		if(object instanceof Integer){
			Integer integer = (Integer) object;;
			return StringUtil.isNull(integer);
		}
		if(object instanceof Object[]){
			Object[] objects = (Object[]) object;;
			return StringUtil.isNull(objects);
		}
		if(object instanceof Object){
			return StringUtil.isNull(object);
		}
		return true;
	}
}
